package be.ipl.eBar.usecasesimpl;

import java.util.List;

import javax.ejb.EJB;
import javax.ejb.Stateless;

import be.ipl.eBar.dao.BiereDao;
import be.ipl.eBar.dao.FournisseurDao;
import be.ipl.eBar.domaine.Biere;
import be.ipl.eBar.domaine.Fournisseur;
import be.ipl.eBar.usecases.GestionFournisseurs;

@Stateless
public class GestionFournisseursImpl implements GestionFournisseurs {

	@EJB
	FournisseurDao fdao;
	@EJB
	BiereDao bdao;

	@Override
	public Fournisseur enregistrer(Fournisseur fournisseur) {
		return fdao.enregistrer(fournisseur);
	}

	@Override
	public List<Fournisseur> listerFournisseurs() {
		return fdao.lister();
	}

	@Override
	public void supprimerFournisseur(String nomFournisseur) {
		Fournisseur f = fdao.lister(nomFournisseur).get(0);
		fdao.supprimer(f.getId());
	}

	@Override
	public List<Fournisseur> listerFournisseurs(String mot) {
		return fdao.lister(mot);
	}

	@Override
	public Fournisseur modifierFournisseur(Fournisseur fournisseur) {
		return fdao.mettreAJour(fournisseur);
	}

	@Override
	public Fournisseur chargerTout(Fournisseur fournisseur) {
		return fdao.chargerBieres(fournisseur);
	}

	@Override
	public Fournisseur ajouterBiere(Fournisseur fournisseur, Biere biere) {
		biere = bdao.recharger(biere.getId());
		fournisseur = fdao.chargerBieres(fournisseur);
		List<Biere> bieres = fournisseur.getBieres();
		if (!bieres.contains(biere)) {
			bieres.add(biere);
		}
		return fournisseur;
	}

	@Override
	public Fournisseur supprimerBiere(Fournisseur fournisseur, Biere biere) {
		biere = bdao.recharger(biere.getId());
		fournisseur = fdao.chargerBieres(fournisseur);
		List<Biere> bieres = fournisseur.getBieres();
		if (bieres.contains(biere)) {
			bieres.remove(biere);
		}
		return fournisseur;
	}

}
